<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
  <style>
    table{
      text-align: center;
    }
  </style>
</head>
<body>
<table border="1">
  <caption>个人信息</caption>
  <tr>
    <td>照片:</td><td id="head_td"></td>
  </tr>
  <tr>
    <td>姓名:</td><td id="name_td"></td>
  </tr>
  <tr>
    <td>年龄:</td><td id="age_td"></td>
  </tr>
  <tr>
    <td>好友们:</td><td id="friend_td"></td>
  </tr>
</table>
<input type="button" value="加载数据" onclick="f()">

<script>
  let headTd = document.querySelector("#head_td");
  let nameTd = document.querySelector("#name_td");
  let ageTd = document.querySelector("#age_td");
  let friendTd = document.querySelector("#friend_td");
  function f() {
    // 模拟从服务器得到一个人的信息
    let p = {name: "传奇哥", age: 18, imgUrl: "chuanqi.jpg", friends: ["貂蝉", "西施", "武则天"]}
    // 把对象中的数据装进td
    nameTd.innerText = p.name;
    ageTd.innerText = p.age;
    // 创建图片标签
    let img = document.createElement("img");
    img.src = p.imgUrl;
    img.width = 100;
    // 把图片装进td
    headTd.append(img);
    // 创建ul和li
    let ul = document.createElement("ul");
    // 遍历好友数组
    for(let friend of p.friends) {
      // 创建li
      let li = document.createElement("li");
      // 给li设置显示的内容为遍历的好友名
      li.innerText = friend;
      // 把li装进ul
      ul.append(li);
    }
    // 把ul装进td
    friendTd.append(ul);
  }
</script>
</body>
</html>